﻿using System;
using System.Collections.Generic;
using System.Text;

namespace GeoFly
{
    /// <summary>
    ///刘永和新建类，本类中的变量全部为多年平均值
    /// </summary>
    public struct Statistics
    {
        /// <summary>
        ///pData[0]: mean daily maximum air temperature for month (Deg C)
        /// </summary>
        public double TMPMX;
        /// <summary>
        ///pData[1]: mean daily minimum air temperature for month (Deg C)
        /// </summary>
        public double TMPMN;
        /// <summary>
        ///pData[2]: Standard deviation for daily maximum air temperature in month (Deg C)
        /// </summary>
        public double TMPSTDMX;
        /// <summary>
        ///pData[3]: Standard deviation for daily minimum air temperature in month (Deg C)
        /// </summary>
        public double TMPSTDMN;
        /// <summary>
        ///pData[4]: mean total monthly precipitation (mm H2O)
        /// </summary>
        public double PCPMM;
        /// <summary>
        ///pData[5]: Standard deviation for daily precipitation in month (mm H2O/day )
        /// </summary>
        public double PCPSTD;
        /// <summary>
        ///pData[6]: Skew coefficient for daily precipitation in month
        /// </summary>
        public double PCPSKW;
        /// <summary>
        ///pData[7]: Probability of a wet day following a dry day in the month
        /// </summary>
        public double PDW;
        /// <summary>
        ///pData[8]: Probability of a wet day following a wet day in the month
        /// </summary>
        public double PWW;
        /// <summary>
        ///pData[9]: Average number of days of precipitation in month
        /// </summary>
        public double PCPD;
        /// <summary>
        ///pData[10]: Maximum 0.5 hour rainfall in entire period of record for month (mm H2O).
        /// </summary>
        public double RAINHHMX;
        /// <summary>
        ///pData[11]: Average daily solar radiation for month (MJ/m2/day)
        /// </summary>
        public double SOLARAV;
        /// <summary>
        ///pData[12]: Average daily dew point temperature in month (Deg C)
        /// </summary>
        public double DEWPT;
        /// <summary>
        ///pData[13]:  Average daily wind speed in month (m/s)
        /// </summary>
        public double WNDAV;
        /// <summary>
        ///pData[14]: Probability of wet days in a month
        /// </summary>
        public double PR_W;
        /// <summary>
        ///pData[15]: average amount of precipitation falling in one day for the month
        /// </summary>
        public double MPDM;
    }
    public class MoniFile
    {
        bool bMoni;
        string FileName;

    }
    public class MoniInfoSet
    {

        string strbegyear;
        string strendyear;
        MoniFile PcpMoni;		//降雨量
        MoniFile TmpMoni;		//气温
        MoniFile SlrMoni;		//太阳辐射
        MoniFile WndMoni;		//风速
        MoniFile HmdMoni;		//相对湿度
        MoniFile Stat;			//月统计文件

        MoniInfoSet() { ResetContent(); }
        void ResetContent()
        {
            //strbegyear = "1980";
            //strendyear = "2001";
            //PcpMoni.bMoni = TmpMoni.bMoni
            //             = SlrMoni.bMoni
            //             = WndMoni.bMoni
            //             = HmdMoni.bMoni
            //             = FALSE;
            //PcpMoni.FileName = TmpMoni.FileName
            //                = SlrMoni.FileName
            //                = WndMoni.FileName
            //                = HmdMoni.FileName
            //                = "";
            //Stat.FileName = "";
        }
    };

    public class MonthStatWgnData
    {

        public MonthStatWgnData(int type)
        {
            usetype = type; ResetContent();
        }
        public void ResetContent()
        {
            recnum = 0;
            wgnDate.Clear();
        }

        public int usetype;	/*important*/	    //=1: the init value of pData[][] is used to compute an appoint statistical value such as mean,stdv et.al 
        //=2: the init value of pData[][] is used to compute the sum of a dataset
        // their initial data is different,if =1;initial data=-99.;else initial data=0.;

        public int recnum;							//total record numbers <>endyear-startyear,for sometimes a certain year will missing
        public List<DateTime> wgnDate;		//the year of data
        public int startyear;						//the starting year of statistic data
        public int endyear;						//the ending year of statistic data
        /// <summary>
        /// 模拟气象参数，共有12个月
        /// </summary>
        
        //public double[,] pData = new double[100, 12];					//dataset
        public int[,] pDataNum = new int[100, 12];
        //the data number in every month which is statisticed such as 28,29,30,31 or other real number values
        //which is used to compute monthly mean data value

        //if for 25 kinds of different data then
        //pData[0][]  -- TMPMX(mon): mean daily maximum air temperature for month (Deg C)
        //pData[1][]  -- TMPMN(mon): mean daily minimum air temperature for month (Deg C)
        //pData[2][]  -- TMPSTDMX(mon): Standard deviation for daily maximum air temperature in month (Deg C)
        //pData[3][]  -- TMPSTDMN(mon): Standard deviation for daily minimum air temperature in month (Deg C)
        //pData[4][]  -- PCPMM(mon): mean total monthly precipitation (mm H2O)
        //pData[5][]  -- PCPSTD(mon): Standard deviation for daily precipitation in month (mm H2O/day )
        //pData[6][]  -- PCPSKW(mon): Skew coefficient for daily precipitation in month
        //pData[7][]  -- PR_W(1,mon): Probability of a wet day following a dry day in the month
        //pData[8][]  -- PR_W(2,mon): Probability of a wet day following a wet day in the month
        //pData[9][]  -- PCPD(mon): Average number of days of precipitation in month
        //pData[10][] -- RAINHHMX(mon): Maximum 0.5 hour rainfall in entire period of record for month (mm H2O).
        //pData[11][] -- SOLARAV(mon): Average daily solar radiation for month (MJ/m2/day)
        //pData[12][] -- DEWPT(mon): Average daily dew point temperature in month (Deg C)
        //pData[13][] -- WNDAV(mon): Average daily wind speed in month (m/s)
        //pData[14][] -- PR_W(3,mon): Probability of wet days in a month
        //pData[15][] -- average amount of precipitation falling in one day for the month
    };
}